package com.springboot.mybatis.example.utils;

import org.junit.platform.commons.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;

import com.springboot.mybatis.example.domain.User;

import lombok.extern.slf4j.Slf4j;

/**
 * create by: 玉米 description:redis 测试工具类 create time: 16:42 2018/12/20
 *
 * @Param: null
 * @return
 */
@Component
@Slf4j
public class RedisComponent {

	@Autowired
	// 操作字符串的template，StringRedisTemplate是RedisTemplate的一个子集
	private StringRedisTemplate stringRedisTemplate;

	@Autowired
	// RedisTemplate，可以进行所有的操作
	private RedisTemplate<Object, Object> redisTemplate;

    public void set(String key, String value){
        ValueOperations<String, String> ops = this.stringRedisTemplate.opsForValue();
        boolean bExistent = this.stringRedisTemplate.hasKey(key);
        if (bExistent) {
            System.out.println("this key is bExistent!");
        }else{
            ops.set(key, value);
        }
    }
	/**
	 * 写入数据
	 */
//	public boolean set(final String key, Object value) {
//		if (StringUtils.isBlank(key)) {
//			return false;
//		}
//		try {
//			redisTemplate.opsForValue().set(key, value);
//			log.info("存入redis成功，key：{}，value：{}", key, value);
//			return true;
//		} catch (Exception e) {
//			log.error("存入redis失败，key：{}，value：{}", key, value);
//			e.printStackTrace();
//		}
//		return false;
//	}

    public String get(String key){
        return this.stringRedisTemplate.opsForValue().get(key);
    }
	/**
	 * 根据key读取数据
	 */
//	public String get(final String key) {
//		if (StringUtils.isBlank(key)) {
//			return null;
//		}
//		try {
//			return redisTemplate.opsForValue().get(key);
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return null;
//	}

	public void del(String key) {
		this.stringRedisTemplate.delete(key);
	}

	public void sentinelSet(User user) {
		int key;
		key = user.getId();
		System.out.println(key);
		redisTemplate.opsForValue().set(String.valueOf(key), user.toString());
	}

	public String sentinelGet(String key) {
		return stringRedisTemplate.opsForValue().get(key);
	}

}
